---
title: 节点
description: Eidos 中一切事物的构建块
sidebar:
  order: 3
---

在 Eidos 中，节点是基本的数据单元——相当于传统文件系统中的文件。由于 Eidos 将全部动态数据存储在单个 SQLite 文件中，所以我们称之为"节点"而非文件。每个节点都有特定的类型，决定了它的功能和用途。

## 节点类型

Eidos 提供四种内置节点类型：

- **doc** - 文档节点，用于编写和存储文本内容
- **table** - 表格节点，用于管理结构化数据
- **folder** - 文件夹节点，用于组织其他节点
- **dataview** - 数据视图节点，用于查询和展示数据

所有节点都按照树形结构组织，类似于文件系统，但每个节点都知道自己的类型和相应的处理方式。

## 数据存储

节点信息存储在 `eidos__tree` 表中：

```sql
CREATE TABLE IF NOT EXISTS eidos__tree (
  id TEXT PRIMARY KEY,
  name TEXT,
  type TEXT,
  parent_id TEXT NULL,
  is_pinned BOOLEAN DEFAULT 0,
  is_full_width BOOLEAN DEFAULT 0,
  is_locked BOOLEAN DEFAULT 0,
  icon TEXT NULL,
  cover TEXT NULL,
  is_deleted BOOLEAN DEFAULT 0,
  hide_properties BOOLEAN DEFAULT 0,
  position REAL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
```

### 字段说明

| 字段 | 类型 | 描述 |
|-----|------|------|
| id | TEXT | 节点唯一标识符 |
| name | TEXT | 节点名称 |
| type | TEXT | 节点类型（doc/table/dataview/folder） |
| parent_id | TEXT | 父节点 ID |
| icon | TEXT | 节点图标 |
| cover | TEXT | 节点封面 |
| is_pinned | BOOLEAN | 是否置顶 |
| is_full_width | BOOLEAN | 是否全宽显示 |
| is_locked | BOOLEAN | 是否锁定 |
| is_deleted | BOOLEAN | 是否已删除 |
| hide_properties | BOOLEAN | 是否隐藏属性 |
| position | REAL | 节点位置 |
| created_at | TIMESTAMP | 创建时间 |
| updated_at | TIMESTAMP | 更新时间 |

## 扩展节点

Eidos 支持通过扩展添加新的节点类型。扩展节点数据存储在 `eidos__extnodes` 表中：

```sql
CREATE TABLE IF NOT EXISTS eidos__extnodes (
  id TEXT PRIMARY KEY,
  blob BLOB,
  text TEXT,
  type TEXT NOT NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
```

### 扩展节点字段

| 字段 | 类型 | 描述 |
|-----|------|------|
| id | TEXT | 节点唯一标识符 |
| type | TEXT | 扩展节点类型，如 `excalidraw` |
| blob | BLOB | 二进制数据（图片、音频、视频等） |
| text | TEXT | 文本数据（JSON、Markdown 等） |
| created_at | TIMESTAMP | 创建时间 |
| updated_at | TIMESTAMP | 更新时间 |

扩展节点根据数据类型选择存储字段：
- `blob` 用于存储二进制数据
- `text` 用于存储文本数据

例如，excalidraw 扩展使用 `text` 字段存储 JSON 格式的绘图数据。